.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2021 Oxide Computer Company
.\"
.Dd Nov 17, 2021
.Dt ENA 4D
.Os
.Sh NAME
.Nm ena
.Nd Driver for the AWS Elastic Network Adapter
.Sh SYNOPSIS
.Pa /dev/net/ena*
.Sh DESCRIPTION
The
.Sy ena
driver is a GLDv3 NIC driver for the AWS Elastic Network Adapter
family of virtual devices.
The driver supports:
.Bl -dash -offset indent
.It
Jumbo frames up to 9216 bytes.
.It
Multiple Rx and Tx rings.
.El
.Pp
By design, this driver does not support VNICs.
A given ENA device can only ever receive traffic for a single unicast
MAC address and IP address combination, as determined by the AWS configuration.
There is no support for promiscuous mode, or for receiving traffic for
additional unicast or multicast addresses.
.Sh CONFIGURATION
The
.Sy ena.conf
file contains user configurable parameters, each of which is described
below.
This file is read when an ENA device is found and an instance of the
driver is attached to it.
Changes made to this file do not affect running instances.
Only instances attached after the changes will see the effects of
those changes.
Therefore, if you want your change to take effect on a running
instance, you must somehow reload it.
That could be done by a manual reloading of the driver or a system
reboot.
.Sh PROPERTIES
The configuration file can be found at
.Pa /kernel/drv/ena.conf .
.Bl -hang -width Ds
.It Sy rx_queue_num_descs
.Bd -filled -compact
Minimum:
.Sy 64 |
Maximum:
.Sy device dependent
.Ed
.Bd -filled -compact
Default:
.Sy device maximum
.Ed
.Bd -filled
The
.Sy rx_queue_num_descs
property determines the number of descriptors provided by the Rx queue.
Currently a single descriptor is equal to a single packet, but in the
future it may be that a single packet consumes multiple descriptors.
.Ed
.It Sy rx_queue_intr_limit
.Bd -filled -compact
Minimum:
.Sy 16 |
Maximum:
.Sy 4096
.Ed
.Bd -filled -compact
Default:
.Sy 256
.Ed
.Bd -filled
The
.Sy rx_queue_intr_limit
property determines the number frames an Rx interrupt will attempt to
process before returning and claiming the interrupt.
This is meant to keep the ENA Rx interrupt handler from consuming too
much system time.
In general, when a NIC becomes saturated with packets, the
.Sy MAC
layer will switch the driver into polling mode to reduce interrupt
load.
.Ed
.It Sy tx_queue_num_descs
.Bd -filled -compact
Minimum:
.Sy 64 |
Maximum:
.Sy device dependent
.Ed
.Bd -filled -compact
Default:
.Sy device maximum
.Ed
.Bd -filled
The
.Sy tx_queue_num_descs
property determines the number of descriptors provided by the Tx queue.
Currently a single descriptor is equal to a single packet, but in the
future it may be that a single packet consumes multiple descriptors.
.Ed
.El
.Sh FILES
.Bl -tag -width Pa
.It Pa /kernel/drv/amd64/ena
Device driver (x86)
.It Pa /kernel/drv/ena.conf
Driver configuration file containing user-configurable options
.El
.Sh INTERFACE STABILITY
The tunables in
.Pa ena.conf
are considered
.Sy Evolving
and may change in the future.
.Sh SEE ALSO
.Xr dlpi 4P ,
.Xr driver.conf 5 ,
.Xr dladm 8 ,
.Xr snoop 8
